function sleep(delay = 1000) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve()
    }, delay)
  })
}

async function* generatorList() {
  await sleep()
  yield 1
  await sleep()
  yield 2
  await sleep()
  yield 3
}

;(async () => {
  let generator = generatorList()
  for await (let value of generator) {
    console.log(value)
  }
})()
// for (const iterator of generator) {
//   console.log(iterator)
// }

// let range = {
//   from: 1,
//   to: 5,
//   *[Symbol.iterator]() {
//     for (let index = this.from; index <= this.to; index++) {
//       yield index
//     }
//   }
// }
// const arr = [...range]
// // console.log(arr)

// function* generateSequence(start, end) {
//   for (let index = start; index <= end; index++) {
//     yield index
//   }
// }

// function* generateAlphaNum() {
//   yield* generateSequence(48, 57)
//   yield* generateSequence(65, 90)
//   yield* generateSequence(97, 122)
// }
// for (const iterator of generateAlphaNum()) {
//   const str = String.fromCharCode(iterator)
//   //   console.log(str)
// }

// function* gen(res) {
//   // 向外部代码传递一个问题并等待答案
//   let result = yield '2 + 2 = ?' // (*)
//   console.log(result)
// }

// let generator1 = gen()

// let question = generator1.next().value // <-- yield 返回的 value

// generator1.next(4) // --> 将结果传递到 generator 中

// function* pseudoRandom(seed) {
//   let value = seed
//   while (true) {
//     value = (value * 16807) % 2147483647
//     yield value
//   }
// }
// const g = pseudoRandom(1)
// console.log(g.next().value)
// console.log(g.next().value)
// console.log(g.next().value)
